{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Laminar pipe flow - Hagen–Poiseuille solution"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this tutorial we use icoFoam to compute a laminar pipe flow, then we compare the numerical solution with the analytical solution. <br>\n",
    "\n",
    "You will find the instructions of how to run this case in the file README.FIRST. <br>\n",
    "\n",
    "By the way, to plot the numerical solution you need to use the utility sample to get the solution at the end of the pipe."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Remember, to execute a cell in ipython you need to press shift-enter"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The %matplotlib magic is used to specify which matplotlib backend we want to use. \n",
    "Most of the time, in the Notebook, you will want to use the inline backend which will embed plots inside the Notebook"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We now import the libraries numpy and matplotlib. <br>\n",
    "NumPy is the fundamental package for scientific computing. <br>\n",
    "Matplotlib is used for plotting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We now use loadtxt to read the input file.  <br>\n",
    "We type np.loadtxt because loadtxt belongs to numpy which we imported with the name np.<br>\n",
    "The skiprows option is used to skip header lines.  In this case, the input file does not contain a header.<br>\n",
    "All the indormation is saved in the variable data, which is a numpy array."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "data = np.loadtxt('../postProcessing/sampleDict/20/s2_U.xy', skiprows=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We now compute the velocity profile according to Hagen–Poiseuille solution. <br>\n",
    "\n",
    "$$v_{radial} = v_{max} \\left[ 1 - \\dfrac{r^2}{R_{max}^2} \\right] $$\n",
    "\n",
    "where $v_{max}$ is the maximum axial velocity obtained from the simulation, $R_{max}$ is the maximum radius, and $r$ is the local radius."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "vmax = 1.4\n",
    "rmax = 0.5\n",
    "\n",
    "x = np.linspace(-1*rmax, rmax, 100)\n",
    "sol = vmax*(1 - x**2/rmax**2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We now plot a sample velocity profile.  <br>\n",
    "To do so, we use the plot function. <br>\n",
    "As this function belongs to matplotlib.pyplot, we append plt to plot as follows: plt.plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f20573bf1d0>]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nYQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f207cc96b50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(x,sol,'-')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<br>\n",
    "<br>\n",
    "<br>\n",
    "Now we can proceed to compare the analytical solution with the numerical solution. <br>\n",
    "Remember, to execute the next cell you need to run first the sample utility."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x7f2054bf4250>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAt0AAAHoCAYAAACVaFNxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VNXCxeHfTg8kdORSQlUiINKCdAmCFJUi9g5XRWne\na8FesIuo14pdxIaCYkAUEcRQBBEQpEgTQaUozUAChJBkf38czIcKJJCZ7CnrfR6eSWZOTtbkhGRl\nzz77GGstIiIiIiLiPxGuA4iIiIiIhDqVbhERERERP1PpFhERERHxM5VuERERERE/U+kWEREREfEz\nlW4RERERET9T6RYRERER8TOVbhERERERP1PpFhERERHxsyjXAfyhUqVKtnbt2q5jhIU9e/ZQunRp\n1zHEz3Scw4OOc+jTMQ4POs4la9GiRduttZUL2y4kS3ft2rVZuHCh6xhhIT09ndTUVNcxxM90nMOD\njnPo0zEODzrOJcsY83NRttP0EhERERERP1PpFhERERHxM5VuERERERE/C8k53SIiIiK+duDAATZu\n3Eh2drbrKEdVtmxZVq5c6TpGyImLi6NGjRpER0cf18erdIuIiIgUwcaNG0lMTKR27doYY1zHOaLM\nzEwSExNdxwgp1lp27NjBxo0bqVOnznHtQ9NLRERERIogOzubihUrBnThFv8wxlCxYsVivcqh0i0i\nIiJSRCrc4au4x16lW0RERETEz1S6RURERPwgbfEm2j02gzq3f0q7x2aQtnhTsffZtm3b4/q4fv36\nUadOHZo2bUrTpk159tlni51Fjo1OpBQRERHxsbTFm7hjwjL2HcgDYFPGPu6YsAyAPs2qH/d+586d\ne9wfO3LkSM4///zj/ngpHo10i4iIiPjYyKmrCwr3n/YdyGPk1NXF2m9CQkLB2yNGjKBx48Y0adKE\n22+/HYAlS5ZwxhlncOqpp3Luuefyxx9/HHV/Y8eOpXHjxpxyyincdtttBfcPHDiQlJQUGjVqxH33\n3Vdwf+3atbnjjjto2rQpKSkpfPfdd3Tr1o169erx0ksvFeu5hTqVbhEREREf25yx75juP1ZTpkxh\n4sSJzJ8/n++//55bb70VgCuvvJIHHniApUuX0rhxY+6///6Cjxk2bFjB9JJly5axefNmbrvtNmbM\nmMGSJUtYsGABaWlpADz88MMsXLiQpUuXMnPmTJYuXVqwn5o1a7JkyRI6dOhAv379+PDDD/nmm2/+\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f2054d08550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "fig = plt.figure(figsize=(12,8))\n",
    "\n",
    "data=np.loadtxt('../postProcessing/sampleDict/20/s2_U.xy', skiprows=0)\n",
    "\n",
    "plt.plot(data[:,0],data[:,1],'o',label='icoFoam')\n",
    "\n",
    "vmax = max(data[:,1])\n",
    "rmax = 0.5\n",
    "\n",
    "x = np.linspace(-1*rmax, rmax, 100)\n",
    "sol = vmax*(1 - x**2/rmax**2)\n",
    "\n",
    "plt.plot(x,sol,'-',label='Analytical solution')\n",
    "\n",
    "plt.legend()\n",
    "plt.grid()\n",
    "plt.xlabel('Radius',fontsize=15)\n",
    "plt.ylabel('$V_{axial}$',fontsize=15)\n",
    "\n",
    "\n",
    "\n",
    "#To save a figure\n",
    "#plt.savefig('test.png', format='png', dpi=300)\n",
    "#plt.savefig('test.pdf', format='pdf', dpi=300)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For completeness, I will give you a few instructtions of how to work with arrays in numpy.<br>\n",
    "\n",
    "To create an array (in this case a vector):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "np.array([1, 2, 3, 4])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To create a multi-dimensional array and save the values in the variable x:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "x = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To know the type of a variable you use type():"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "type(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Which states that the variable x is a numpy ndarray. <br>\n",
    "To know the dimensions of the array:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "x.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To print one value of the array"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "x[0,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To print one column of the array:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "x[:,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "and to print a row:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "x[0,:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To compute the mean of the previous row:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "np.mean(x[0,:])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
